package demo02;

/*
 *  Thread类的构造方法：
 *      public Thread(String name)：分配一个指定名字的新线程对象
 *  Thread类的常用方法：
 *      public void start()：使此线程开始执行，Java虚拟机调用此线程的run方法
 *      public void run()：此线程需要执行的任务，需要在此处定义代码
 *      public String getName()：获取当前线程的名称
 *      public static Thread currentThread()：返回对当前正在执行的线程对象的引用对象
 *      public void setName()：改变当前线程的名称，使之与参数name相同
 *      public static void sleep(long millis)：使当前正在执行的线程以指定的毫秒数暂时停止执行（休眠）
 */
public class Demo01ThreadMethod { // 测试类
    public static void main(String[] args) {
        MyThread myThread = new MyThread("MyThread-01"); // MyThread类重写了构造方法，使得可以在创建线程时设置线程名

        /*
         *  public void start()：使此线程开始执行，Java虚拟机调用此线程的run方法
         */
        myThread.start(); // 新线程开启

        /*
         *  测试类Demo01ThreadMethod没有继承Thread类
         *  通过Thread类的静态方法currentThread可以获取到主线程的引用对象
         *  同理，如果需要让主线程休眠，可以通过Thread类的静态方法sleep实现
         */
        Thread mainThread = Thread.currentThread();
        System.out.println(mainThread); // Thread[main,5,main]
        System.out.println(mainThread.getName()); // main
        mainThread.setName("mainThread");
        System.out.println(mainThread); // Thread[mainThread,5,main]
        System.out.println(mainThread.getName()); // mainThread
        try {
            for (int i = 5; i > 0; i--) {
                System.out.println("主线程倒计时：" + i);
                Thread.sleep(1000); // 休眠1s
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        System.out.println("主线程任务结束");
    }
}
